package com.liuyc.lib.common

import androidx.multidex.MultiDexApplication
import com.liuyc.lib.common.base.uitls.ProcessUtil
import kotlin.properties.Delegates

/**
 * BaseApplication
 * 基础模块的 application
 * 为以后多模块构建做基础准备
 * 设想：通过xml 配置各个module 的application
 * 载入xml 后在 主工程中 反射初始化该 module
 * 该module 为单例模式
 * 刘隽
 */
abstract class BaseModuleApplication : MultiDexApplication() {



    override fun onCreate() {
        super.onCreate()
        initMainProcess()
    }

    protected fun initMainProcess() {
        val processName: String? = ProcessUtil.getCurrentProcessName(this)

        if (applicationContext.packageName == processName) {
            doInitMainProcess()
        }

    }


    /**
     * 获取当前模块需要 Koin 初始化的模块集合
     */
    abstract fun loadKoinModuleList()

    /**
     * 执行在主进程初始化的内容
     */
    open fun doInitMainProcess() {

    }

}